1. Field of the Invention
The present disclosure relates to network traffic management techniques, and more specifically, to a method and system for distributed workload management of network applications in a hierarchical network system.
2. Description of the Related Art
Hierarchical network systems, such as cloud computing environments, are increasingly becoming widely adopted. Such systems include, for example, front-end HTTP servers, a middle layer of proxies, and a back-end layer of application servers and/or databases. The HTTP server layer filters out invalid or malicious requests, and then forwards valid requests to the proxy layer. The proxy layer then routes those requests to a selected application server and/or database.
With the development of cloud computing, the concept of supplying a resource as a service is put forward, emphasizing the importance of flexible control of overload protection and quality of service (hereinafter referred to as QoS) assurance. As a result, workload management has become increasingly important in hierarchical network systems. Commonly, workload management occurs mostly between layers of a proxy and backend server.
Many efforts have now been made on workload management in hierarchical network systems, which can be divided into two categories: centralized and distributed workload management.
Centralized workload management has now been primarily adopted in hierarchical network systems. That is, a center unit is relied upon to collect information and make decisions about request dispatching in a hierarchical network system.
In centralized management architecture, using a centralized controller to manipulate traffic flowing through proxies is widely practiced. A central management unit in the centralized controller is responsible for collecting and reviewing the workload arrival rate and the response time thereof, thereby managing the workload applied to a backend server. In some cases, the management decision is made in a centralized form and is implemented in a distributed manner by multiple servers in the proxy layer. In most situations, however, the decision is made and implemented in a centralized manner.
In this centralized management, it is necessary to pre-collect information about backend application servers, such as CPU usage and/or memory usage and the execution time of each request, and process the information to obtain several statistical data samples. The central management unit may acquire some prior knowledge through a training/learning procedure based on those samples, and then the workload management of incoming traffic can be enabled based on the prior knowledge. Usually, the deployment of such a centralized controller may require professional skills, leading to a large system overhead for workload management, suffering from a high implementation complexity, and consuming a large amount of time. Moreover, with centralized management, all management functions stay in a single server, and in this case it is difficult to improve its scalability as every server has its own capability limitations. Further, there is another serious issue with centralized management, i.e., if the central management unit fails, the resource will be utilized insufficiently in the case of the unbalanced load among clusters, and to an even extent, the workload management of the whole system will be disabled.
In distributed management architecture, traffic engineering is usually optimized through distributed controllers in the Internet. Implemented within the transport layer of the OSI protocol stack, such a distributed controller does not rely upon information from the backend servers to work, such as information about CPU/memory usage of the backend servers, and the like. The distributed controller resorts to information collected in the transport layer, such as packet loss rate, data transmission rate and other hardware-related information, and thus takes no account of serviced application-based information, such as request priority, request response time, and other information relative to requesting applications (e.g., client type, service requirement, and the like). Therefore, the distributed controller fails to distinguish between the services provided for front-end requests, and thus is incapable of providing different QoS assurances for different service levels, and is also unable to protect backend application servers from overload.
Confronting traffic from a large number of applications deployed in a cloud environment, it is a challenge to guarantee Service Level Agreements (SLA) requirements from clients with various resource requirements and workload characteristics.
Therefore, there is a need for an improved method and system capable of distributed workload management for network applications in a hierarchical network system.